Conventional computer and communications systems store and retrieve, send and receive, and process information that may consist of symbols, strings, numbers, arrays, lists, commands, programs, messages, objects or other types of data as sequences of consecutive units of bits, bytes, octets, words, blocks, sectors, segments, pages, or other units. This information is typically referenced by addresses, often consisting of a series of absolute and relative locations, and delimited by length.
While different types of information may enter or leave the system through a single device, the different types of information are typically segregated within the system, and referenced by device identifiers, directories, file names, memory pointers and other forms of links that are created and maintained separately. In any given area of storage or memory, it is impossible to determine the information present, its type, structure or meaning without contextual information located elsewhere. This has traditionally required software that knows all of the information attributes including system location.
Even the most advanced contextual systems, object-oriented systems, while presenting new software and application capabilities to the user, still rely upon traditional addressing and linking structures within the system for segregating software and data, partitioning data constructs and managing memory.
Memory-mapped I/O, prevalent in every contemporary commercial microprocessor, perpetuates dependence on memory cell as the basic unit of data address and transfer.
Conventional microprocessor systems use memory-mapped I/O in which I/O operations require a data bus and an address bus. The data travels on the data bus between a single processor and I/O devices when the processor selects a read or write memory location and places the data in that location or register. Underneath the memory operation, a read or write operation is selected, a device address or code is selected, and the data is clocked onto the bus to initiate the transfer. This is a unit by unit process that uses a single data bus for bidirectional transfer, and only one unit transfer can occur at a time.
In addition, systems require additional leads and controls for contention and interrupt processing.
More complex systems, have no requirement that one processor control all bus activities, and devices can contend for bus use on a unit by unit basis. But operations still occur on a memory address and transfer count basis.
In order to optimize processing speed, engineering efforts have concentrated on maximizing bus width. Practical limits of semiconductor devices and circuit boards restrict on-board connectivity and off-board ports and paths. In particular, a single bus is used for both send and receive operations. Also, it is also not clear how fiber optics can be profitably employed using this bus technology.
Similarly, expanded address bus widths and address segmentation mechanisms have been devised to increase accessible memory address spectrums. But these approaches complicate board design, fragment system architectures, and increase system complexity.
Prior art systems where multiple units access a common or shared bus rely upon contention and collision sensing mechanisms to determine bus availability and arbitrate bus usage. Typically, the unit of information transfer is a function of the protocol, and bears no relationship to the size or type of information being transferred. Files or other information sequences which exceed this unit length must be transmitted in multiple, separate and distinct intervals of bus occupancy.
Communications systems, facilities and protocols treat communicated information as meaningless, structureless streams of bits and bytes. Protocols specify extensive protective envelopes, controls for ensuring reliable transmission, and transfer structures.
The separate and distinct mechanisms of memory management, memory-mapped I/O buses, and communications protocols create boundaries within and between systems that increase system complexity and preclude managing information on a unified and integrated basis.
Software modules that exclusively reference specific pieces of information must either have that information segregated from other information, or must include the added complexity of knowing and preserving the structure of all of the information. Specific locations and pointers must always be separately created and maintained. These requirements add further complexity to applications software.